package ru.compft.web.controller;

import ru.compft.common.data.AppRole;
import ru.compft.common.services.RolesService;
import ru.compft.web.WebConst;
import ru.compft.web.adapter.RoleAdapter;
import ru.compft.web.beans.RoleBean;
import ru.compft.web.utils.FacesUtils;

import java.io.Serializable;

/**
 * User: VVasiliev
 * Date: 14.06.12
 * Time: 13:43
 * Контроллер для управления доступными ролями системы
 */
public class RolesController implements Serializable {
    private static final long serialVersionUID = 8007538635649176677L;

    public void editRole() {
        final RoleBean roleBean = (RoleBean) FacesUtils.getBackingBean(WebConst.ROLE_BEAN);
        System.out.println("roleBean = " + roleBean);
        // получаем сервис работы с ролями
        if (roleBean != null) {
            final RolesService rolesService = (RolesService) FacesUtils.getSpringBean(WebConst.ROLE_SERVICE);
        }
    }

    public void addRole() {
        final RoleBean roleBean = (RoleBean) FacesUtils.getBackingBean(WebConst.ROLE_BEAN);
        System.out.println("roleBean = " + roleBean);
        // получаем сервис работы с ролями
        if (roleBean != null) {
            if (roleBean.getId() != null) {
                // такого быть здесь не должно. Выходим из метода
                // todo сделать через файл messages
                FacesUtils.addErrorMessage(null, "Ошибка при добавлении роли");
                return;
            }
            // валидация
//            if (!RoleValidator.isValid(roleBean)) {
//                // todo сделать через файл messages
//                FacesUtils.addErrorMessage(null, "Ошибка валидации роли");
//                return;
//            }

            final AppRole appRole = RoleAdapter.convertToDataObject(roleBean);
            if (appRole == null) {
                // todo сделать через файл messages
                FacesUtils.addErrorMessage(null, "Ошибка конвертации роли");
                return;
            }

            final RolesService rolesService = (RolesService) FacesUtils.getSpringBean(WebConst.ROLE_SERVICE);
            final AppRole role = rolesService.addRole(appRole);

            if (role != null) {
                // сохранено успешно
                // todo сделать через файл messages
                FacesUtils.addInfoMessage(null, "Роль сохранена успешно");
            } else {
                // сохранено не успешно
                // todo сделать через файл messages
                FacesUtils.addErrorMessage(null, "Ошибка сохранения роли");
            }
        }
    }
}
